package com.pilipala.service;

import com.pilipala.dto.PageinationDTO;
import com.pilipala.dto.SearchDTO;
import com.pilipala.dto.VideoDTO;
import com.pilipala.dto.VideoPageDTO;
import com.pilipala.result.PageResult;
import com.pilipala.vo.CommentVO;
import com.pilipala.vo.VideoVO;
import org.springframework.web.multipart.MultipartFile;

public interface VideoService {
    /**
     * 上传封面
     * @param file 上传的文件
     * @return 返回拼装的封面路径
     */
    String uploadCover(MultipartFile file);


    /**
     * 上传视频
     * @param file 上传的文件
     * @return 返回拼装的路径
     */
    String uploadVideo(MultipartFile file);

    /**
     * 新增视频字段
     * @param videoDTO 视频的所有字段
     */
    void create(VideoDTO videoDTO);


    /**
     * 根据用户Id获取视频
     * @param videoPageDTO 用户Id
     * @return 分页后的视频数据
     */
    PageResult getByUserId(VideoPageDTO videoPageDTO);


    /**
     * 用于首页显示视频,不带任何条件直接返回视频数据
     * @param videoPageDTO 分页大小
     * @return 分页后的视频数据 包括total和records
     */
    PageResult listAll(VideoPageDTO videoPageDTO);

    /**
     * 关于video的搜索接口
     * @param searchDTO 包括页码、页大小、搜索关键字、排序类型
     * @return 返回分页后的video
     */
    PageResult search(SearchDTO searchDTO);

    /**
     * 根据视频Id获取视频数据
     * @param id 视频Id
     * @return 返回视频数据
     */
    VideoVO getById(Long id);

    /**
     * 根据视频Id删除视频
     * @param id 视频Id
     */
    void delete(Long id);

    /**
     * 根据视频Id修改视频
     * @param videoDTO 各种信息
     */
    void update(VideoDTO videoDTO);

    /**
     * 收藏视频
     * @param videoId 视频Id
     */
    void collection(Long videoId);

    /**
     * 获取收藏的video
     * @return 返回分页后的数据
     */
    PageResult getCollection(PageinationDTO pageinationDTO);

    /**
     * 点赞视频
     * @param videoId 视频id
     */
    void likes(Long videoId);
}
